#include <iostream>
using namespace std;

//函数模版注意事项

//1、自动类型推导，必须推导出一致的数据类型T 才可以使用
template<class T>   //也可写成：template<typename T>
void myswap(T& a, T& b)
{
    T temp = a;
    a = b;
    b = temp;
}

void test1()
{
    int a = 10;
    int b = 99;
    char ch = 'a';
    
    myswap(a, b);
    //error: myswap(a, ch);     推导不出一致的 T类型
    
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
}

//2、模版必须要确定出 T的数据类型才可以使用
template<class T>
void func()
{
    cout << "func 调用" << endl;
}

void test2()
{
    //error: func();    未指明T的类型

    func<int>();
}

int main()
{
    test1();
    test2();
    return 0;
}